ADB(Android Debug Bridge)是一種可以跟Android設備溝通的橋樑工具
在開發Android或是Quest VR裝置的時候
使用Adb可以很方便的處理調式各種功能
安裝 Android SDK 平台工具
adb
可執行文件的環境變量。啟用 Android 裝置的開發者模式
Unity 項目設置
在你使用 Unity 測試應用時,確保正確連接到 Android 裝置。
# 開啟指定端口進行無線連接
adb tcpip 5555
# 連接裝置 (用設備的 IP 地址代替)
adb connect "裝置IP"
# 電池狀態
adb shell dumpsys battery
# 控制器電池狀態
adb logcat -d | findstr /C:"serial" /C:"handedness" /C:"battery state"
# 查看裝置存儲狀況
adb shell df -h
# 查詢裝置型號
adb shell getprop ro.product.model
# 查詢裝置序列號
adb shell getprop ro.serialno
# 關閉應用
adb shell am force-stop com.my.app.package
# 開啟應用 (多種方式)
adb shell monkey -p your.app.package.name 1
adb shell am start -n com.package.name/.ActivityName
# 安裝 APK 文件
adb install E:\Cindy\test.apk
# 卸載應用
adb uninstall com.cindy.test
# 立即重啟 Android 裝置
adb reboot
# 將系統中的 APK 文件拉取到本地
adb pull /system/app/cindy.apk E:\Cindy\
# 列出裝置中已安裝的應用
adb shell pm list packages
# 檢查屏幕狀態
adb -s 192.168.88.32 shell dumpsys display | findstr "mScreenState"
adb -s 192.168.88.32 shell dumpsys activity activities | find "isSleeping"
# 查詢裝置的感應器狀態
adb -s 192.168.88.37 shell getprop | findstr "mounted"
# 查詢當前活動的 Activity
adb -s 192.168.88.32 shell dumpsys activity activities | find "mResumedActivity"
# 禁用接近傳感器
adb shell am broadcast -a com.oculus.vrpowermanager.prox_close
# 啟用接近傳感器
adb shell am broadcast -a com.oculus.vrpowermanager.automation_disable
# 停止 Guardian
adb shell setprop debug.oculus.guardian_pause 0
# 啟用 Guardian
adb shell setprop debug.oculus.guardian_pause 1
# 推送文件到 SD 卡
adb push ./demo.txt /sdcard/Android/data/com.pumpkin.vrcms.client/files/pumpkin-cms-config2.txt
在 Unity 中使用 ADB 命令可以幫助你在開發過程中自動化 Android 應用的測試與部署流程。你可以通過編寫自動化腳本來執行這些命令,並在測試設備上快速重複進行應用的安裝、卸載、重啟等操作。
可以考慮使用 C# 程序直接在 Unity 編輯器中呼叫 ADB 命令:
using System.Diagnostics;
public class ADBHelper
{
public static void ExecuteAdbCommand(string command)
{
Process adbProcess = new Process();
adbProcess.StartInfo.FileName = "adb";
adbProcess.StartInfo.Arguments = command;
adbProcess.StartInfo.RedirectStandardOutput = true;
adbProcess.StartInfo.UseShellExecute = false;
adbProcess.StartInfo.CreateNoWindow = true;
adbProcess.Start();
string output = adbProcess.StandardOutput.ReadToEnd();
adbProcess.WaitForExit();
UnityEngine.Debug.Log(output);
}
}
在 Unity 編輯器內,你可以像這樣呼叫 ADBHelper.ExecuteAdbCommand("devices")
來列出所有連接的裝置。